python - 后台进程 subprocess.Popen with Pipe
全部标签 假设我正在编写一个调试器。如何在Windows系统上构建堆栈跟踪?我不需要列举符号等等;只是堆栈上各种函数调用的地址。我已经有了具有VM_READ访问权限的线程句柄。 最佳答案 比利,DBGHELP.DLL是你的friend。各种usefulfunctions对于那些希望执行调试器之类的事件的人...您可以在其中找到像StackWalk64这样的好东西和其他允许您指定要操作的目标进程的程序。当然,您可能需要确保您的调试器进程本身已被授予SeDebugPrivilege。玩得开心! 关于c
考虑delfoo.py及其伙伴lol.py:#----delfoo.py-----importosos.unlink("foo.txt")#----lol.py----importos,sysf=open("foo.txt","w")f.write("HI")#notclosingfonpurpose!os.execl(sys.executable,sys.executable,"delfoo.py")print"Ifthislineshows,thensomethingisbroken."调用pythonlol.py产生(注意最后一行没有打印):C:\tmp>pythonlol.py
我已经安装了ActivePython3.1并按照文档中turtle模块的要求使用-n参数运行IDLE。但是,当我尝试将它与turtle.postion()等调用一起使用时,会打开新窗口(带有Tk图标),它会卡住并且什么也不显示。有什么问题吗? 最佳答案 卡住的直接原因是Tk事件循环没有得到服务。没有它,Tk窗口不会正确显示或更新(所有GUI工具包都是基于事件的,但Tk尤其如此)。不幸的是,我不太了解Python的Tk绑定(bind)或IDLE,无法说出这是由什么引起的。 关于python
我有一个在Windows资源管理器中运行的程序。通常,如果没有其他程序在运行,它将使用2-3%的CPU(因此explorer.exe将在资源监视器中显示2-3%)。当我的程序未运行而另一个不会增加explorer.exeCPU使用率的程序正在运行时(例如FireFox),explorer.exeCPU使用率可以忽略不计。但是,当我的程序和另一个程序(如上所述)同时运行时,explorer.exe的CPU使用率将增加到8-10%。我注意到在Windows资源管理器中运行的其他程序也会发生同样的事情。有人知道为什么会这样吗?它是Windows固有的东西还是有其他程序可能导致这种情况?P.S
我想运行一个可执行文件,对位于远程文件管理器上的数据集执行一些处理。作为设计的一部分,我希望文件管理器的位置灵活,并且在运行时传递给我的python程序。我已经将以下代码放在一起来说明我的问题,但是使用python命令,所以任何人都可以运行它:#!/usr/bin/envpythonimportosimportsubprocessdefrunMySubProcess(cmdstr,iwd):p=subprocess.Popen(cmdstr,shell=True,cwd=iwd,stdout=subprocess.PIPE,stderr=subprocess.PIPE)(stdout,
环境:WinXP、VisualC++我正在使用pthread_win32库来在我的程序中实现线程,我想将我的进程(程序)优先级提高到HIGH_PRIORITY_CLASS。库中是否有允许这种操作的函数?否则,是否可以将SetPriorityClass函数与`pthread_win32一起使用,或者我必须使用win线程以确保某种兼容性? 最佳答案 你可以获得一个本地线程句柄来调用SetPriorityClass与pthread_getw32threadhandle_np. 关于c++-使用
我正在使用Python自动化一些Windows的东西,使用PIL截取屏幕截图等。问题是有时,在某些功能的深处,我会执行time.sleep(1)并且我正在连接的GUI应用程序会在那一秒卡住。这很奇怪,因为在其他地方执行time.sleep不会导致卡住。我无法确定究竟是什么导致了卡住,什么不是。它在主线程和主线程之外的线程中都发生过。有什么想法吗?我觉得我只需要一个“冷静”功能来让Python停止它正在做的任何事情,让目标UI恢复并刷新和处理输入,然后将它带回Python。什么功能可以做到这一点?(windowsSleep函数看起来就像python的time.sleep。)
我有一个命令行应用程序,它根据用户提供的脚本执行其他程序。一些执行的子进程是cmd.exe运行各种.cmd脚本。一些.cmd脚本使用titleWindowsshell命令设置控制台窗口标题。这就是问题所在。如果用户请求记录子进程的输出,我使用标准句柄的管道来获取子进程的输出。然而,这似乎使子进程无法附加到我的应用程序运行所在的控制台,因此title命令停止工作,停止更改控制台窗口标题。是否可以创建一个具有重定向标准句柄但仍附加到父进程控制台的进程,以便title命令起作用? 最佳答案 显然,要将子进程附加到父控制台,所需要做的就是不
1)我正在寻找一个非常简单的示例,分别包含两个函数(Parent、Child),它们将创建一个子进程,然后将子进程连接到父进程(父进程可以访问子进程中的变量).请让示例尽可能简单,因为我很确定Windows代码是有意设计得尽可能复杂和困惑的。2)或者,我也愿意考虑替代WINAPI调用来创建父/子进程(只要它与Windows兼容)。编译器是code::blocks,操作系统是Vista。如果可能的话,最好与其他操作系统兼容(我知道WINAPI不是,但这是我知道的唯一方法)。如果这些函数与unix函数(例如fork)有相似之处,那就太好了。3)对于一个更难的替代方案,我怎样才能以这样的方式
我想使用MFC构建一个类似于应用程序的任务管理器。我已经成功地枚举了当前运行的各种进程的PID和内存使用情况。我的问题是我还想获得每个进程运行的线程数。 最佳答案 您可以使用Toolhelperlibrary来做到这一点(以及更多相关的事情)(win32)通过进程snapshot然后走路Thread32First/Next. 关于windows-如何使用MFC统计Windows中每个进程的线程数,我们在StackOverflow上找到一个类似的问题: http